Use case: SPI transmit/receive in DMA mode ¶
Sequence diagram ¶
Code snippet ¶
|
HAL1 |
HAL2 |
|---|---|
#define DATA_TO_SEND 255
#define DATA_TO_RECEIVE_SIZE DATA_TO_SEND
uint8_t aRxBuffer[DATA_TO_RECEIVE_SIZE];
uint8_t aTxBuffer[] = "*** SPI communication based on DMA mode ***"
SPI_HandleTypeDef hspi1;
HAL_SPI_RegisterCallback(&hspi1, HAL_SPI_RX_COMPLETE_CB_ID, USER_SPI_TxRxCpltCallback);
HAL_SPI_TransmitReceive_DMA(&hspi1, aTxBuffer, aRxBuffer, DATA_TO_RECEIVE_SIZE);
|
#define DATA_TO_SEND 255
#define DATA_TO_RECEIVE_SIZE DATA_TO_SEND
uint8_t aRxBuffer[BUFFERSIZE];
uint8_t aTxBuffer[] = "*** SPI communication based on DMA mode ***"
hal_spi_handle_t hspi1;
HAL_SPI_RegisterTxRxCpltCallback(&hspi1, HAL_SPI_RX_COMPLETE_CB_ID, USER_SPI_TxRxCpltCallback);
HAL_SPI_TransmitReceive_DMA(&hspi1, aTxBuffer, aRxBuffer, DATA_TO_RECEIVE_SIZE);
|
Key changes ¶
TX/RX complete callback registration uses the dedicated HAL2 registration API (
HAL_SPI_RegisterTxRxCpltCallback()).HAL2 uses
hal_spi_handle_tinstead ofSPI_HandleTypeDef.

